/* ===========================================================
 * TradeManager : a application to trade strategies for the Java(tm) platform
 * ===========================================================
 *
 * (C) Copyright 2011-2011, by Simon Allen and Contributors.
 *
 * Project Info:  org.trade
 *
 * This library is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
 * License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
 * USA.
 *
 * [Java is a trademark or registered trademark of Oracle, Inc.
 * in the United States and other countries.]
 *
 * (C) Copyright 2011-2011, by Simon Allen and Contributors.
 *
 * Original Author:  Simon Allen;
 * Contributor(s):   -;
 *
 * Changes
 * -------
 *
 */
package org.trade.broker.client;

import org.trade.persistent.dao.Contract;
import org.trade.persistent.dao.TradeOrder;
import org.trade.persistent.dao.TradeOrderfill;
import org.trade.persistent.dao.Tradestrategy;

public interface ClientWrapper {
	void error(Exception e);

	void error(String str);

	void error(int id, int errorCode, String errorMsg);

	void connectionClosed();

	void orderStatus(int orderId, String status, int filled, int remaining,
			double avgFillPrice, int permId, int parentId,
			double lastFillPrice, int clientId, String whyHeld);

	void openOrder(int orderId, Contract contract, TradeOrder order,
			OrderState orderState);

	void nextValidId(int orderId);

	void contractDetails(int reqId, Contract contract);

	void contractDetailsEnd(int reqId);

	void execDetails(int reqId, Contract contract, TradeOrderfill execution);

	void execDetailsEnd(int reqId);

	void historicalData(int reqId, String date, double open, double high,
			double low, double close, int volume, int count, double WAP,
			boolean hasGaps);

	void realtimeBar(int reqId, long time, double open, double high,
			double low, double close, long volume, double wap, int count);

	void onCancelRealtimeBars(Tradestrategy tradestrategy);

	void onCancelBrokerData(Tradestrategy tradestrategy);

	void onCancelBrokerData(Contract contract);

	void onCancelRealtimeBars(Contract contract);

}
